\section{素材准备}

基本环境配置好后，整个项目只是处于一个可用状态，想要达到一个好用状态还需更多的配置，下面这些配置是提升我们效率的关键。

\subsection{PDF相关}

在将PDF文档转化为 \LaTeX 文档的过程中，原始 PDF文档清晰度越高越好，一来利于OCR的识别，二来利于图片的获取。一般要求600dpi的彩色扫描，可用专业的扫描仪扫描获得，这里推荐拆书扫描，这样图片的失真最少，光照效果更好。条件有限的，可用补光灯和手机搭配，这个需要光线合适均匀，手机成像质量要高，后期强化修剪。

一般扫描好的PDF文档我们还不能直接拿来用，后期的处理也是关键。先将我们的PDF转变为图片格式，在转成图片的时候最好直接原图提取，不要将其转变为其它的格式，以免质量损失。一般扫描仪得到的PDF文档为jpg格式，推荐使用  \lstinline|pdfimages| 工具，快速高效。
\begin{lstlisting}[language=bash]
pdfimages -j -f 3 -l 12 document.pdf doc #各参数意思可用 - - help 参看
\end{lstlisting}


如果你直接扫描成单张图片的形式，上面那步请忽略。下面我们需要对每张图片进行处理，这里可用GIMP处理或者用ImageMagick处理，GIMP是GUI操作而ImageMagick是命令行操作，编写脚本做批处理首选 ImageMagick 。下面为大家推荐两款处理扫描文档的利器：ScanTailor Advanced 和  comicenhancerpro ，前者是一款开源软件，后者是马同志为处理漫画而编写的，在Linux下用wine可完美运行。

综合运用上面的工具，完成去水印、洗白、切割、分割等步骤后一款高质量的扫描文档变诞便诞生。再顺便用OCRmyPDF工具嵌一个文字层，用pdftk添加书签，这样基本就完美了。


\subsection{OCR识别}

我们的目标是将其转变为可编辑 \LaTeX 的文档。当我们拿到一个PDF文档后，若这是一个文字版PDF，则需要另外特别处理，这里暂且不论。但是一个图片档的PDF是，首先需要获取里面的文字内容，也就是OCR，我这里使用的是百度的API。用里面的高精度文字识别作为一般文字的OCR，用里面的表格识别做表格的OCR。

相关的脚本已写好，分为批量识别和手动识别两种，具体查看项目里面OCR的部分。当获得OCR的文本文档后，需要对其进行格式化，这里的格式化包括特殊字符、公式、上标、下标、分行、标点、特殊环境镶嵌等等，现阶段对语文、物理、数学、化学、英语采用不同的策略，依靠正则表达式来完成相关任务，相应的脚本已写好，请查看项目中OCR格式化相关部分。


这里推荐添加环境变量，这样可以直接在各处使用。直接在家目录下的 \lstinline|.bashrc| 文件中加入如下代码即可：
\begin{lstlisting}[language=bash]
if [ -d "$HOME/.config/autokey/myscript/bin" ] ; then
    PATH="$HOME/.config/autokey/myscript/bin:$PATH"
fi
\end{lstlisting}

\subsection{图片处理}
一个文档中，往往包含大量的图片，需要讲这些图片嵌入到 \LaTeX 文档之中。图片可简单的分为实物图和示意图，其中的实物图亦即是各种实物照片，这一部分的处理简单粗暴直接截图插入，后期的话可用 ImageMagick 批量作处理一下背景，让其透明化。

实际文档中，特别是理工科的文档，包含大量的示意图，对于这一类图片的处理我们的目标是将其变成矢量图片且是可以编辑的。因为对于文档公式中的字母符号之类经常要作改动，而图片中相应的字母和符号也要作改动，能够随时编辑这是刚需。对于各种题目来说，变动题中的已知条件，需要改动相应的图片，图片的编辑要求也是必不可少。另外，将其变成矢量图片，缩放不失真，视觉效果很好。


对于示意图而言，又可以分为黑白和彩色两个，对于黑白和彩色分别编写了不同的脚本，将其转变为 svg 形式的矢量图片，再插入文档中去。各位写插图一般使用 tikz ，tikz 画图不太习惯，日常使用inkscape作图，再以svg的形式插入文档中。为此有专门的转换脚本、编辑脚本、创建脚本等，具体请查看项目中svg相关部份。

作图软件有如下几个推荐：
\begin{itemize}
	\item
	tikz
	\item 
	asymptote
	\item 
	inkscape 
\end{itemize}

tikz与\LaTeX 文档结合较好，有很多现成的模块可以直接使用，方便快捷。缺点是编程不便，精度较低，三维不便，函数不便。而asymptote是一款以编程的语言设计的矢量数学作图语言，缺点是第三方模块较少，与 \LaTeX 文档结合稍有麻烦。inkscape可视化操作，入门上手简单快捷。

\subsection{表格处理}

在 \LaTeX 中编写表格，特别是复杂表格简直如同噩梦一般，查看了网络上的各种转换脚本，有 excle 中用 vba 写的，有用 Python 写的，有用 Java 写的等等，都不尽人意，最后依靠 Gnumeric 的转换功能实现了复杂表格的编排和与文本的锲合，基本完美\footnote{官方的 Gnumeric 转换功能有点小问题，需要修改源码重新编译一下，各位可自行修改编译或者用我们编译好的。}。 相应的表格处理脚本请查看项目中的表格相关部分。

\subsection{文档格式}

在 \LaTeX 文档的编写过程中，一个好的模板是必不可少的。一本书籍的编排主要涉及到如下部分：

\begin{multicols}{3}       
\begin{itemize}
	\item 
	封面
	\item 
	前沿
	\item 
	目录
	\item 
	序章
	\item 
	正文
	\item 
	附录
	\item 
	答案
	\item 
	参考文献
	\item 
	名词索引
	\item 
	版本记录
	\item 
	试卷生成
\end{itemize}
\end{multicols}


每一个部分都有每个一部分的样式，大家可根据自己的喜好逐一定制。这里我们提供了一个模板，这是个大杂烩，综合了大量网上的内容，在此感谢各位网友的分享。另外，这里面有很多写法都不规范，很散，没有做相应功能的封装，后期会逐步完善。其中独立实现了如下内容：
\begin{multicols}{3}       
\begin{itemize}
	\item
	选择题（二选、三选、四选、五选、六选、图像选择）
	\item 
	对页边注的手动控制
	\item 
	页眉页脚（复刻）
	\item 
	页眉页脚诗句
	\item 
	参考答案
	\item 
	常见仪器读数示意图绘制
\end{itemize}
\end{multicols}

具体内容请参考项目中的样式控制模板文件。已知问题：虽然可以正常编译使用，但还是有大量的警告信息，代码不够规范，有些问题没有考虑全面，后期有时间了一个个解决。


\subsection{辅助部分}

\subsubsection{公式识别}

这里推荐 Mathpix snipping Tool 软件，现阶段增加了中文的识别，亦可以当作OCR识别小助手用。此软件为订阅制，需付费使用，若愿折腾可用其提供的API，每个账号每月有1000次的试用。


\subsubsection{剪贴板管理}
在实际的工作中，需要用到之前粘贴复制的内容，这里一款剪贴板管理软件就尤为必要，这里给大家推荐 CopyQ 。



\subsubsection{PDF查看}

我们的源文件是PDF版本，一款好的查看器至关重要，这里推荐 llpp 查看器，基于 mupdf ，支持键盘操作，各种自定义。

\subsubsection{TeXStudio 宏}

根据自己的情况配置自己常用的操作，项目里面的配置文件，是我自己日常使用的，配置规则上百个。建议各位不要拿着别人的用，每个人的操作习惯和思维习惯不一致，只需要看别人是怎么实现某一个功能的就可以了，具体该设置什么条件触发，看自己的喜好，习惯不是适应，而是培养。


\subsubsection{选择题格式化}

模板里面四个选项的选择题的命令是  \lstinline|\fourchoices{}{}{}{}| ，带有四个参数，分别是$ A $、$ B $、$ C $和$ D $四个选项的内容。我们不可能一个个手动填写，为此写了一个脚本来干这个事，能根据对应的规则自动生成我们需要的格式。详情请查看项目中的选择题部分。
\begin{lstlisting}[language=bash]
\fourchoices
{something}
{something}
{something}
{something}
\end{lstlisting}
里面的脚本提供了各种选择题（二选、三选、四选、五选、六选）的自动化处理。

\subsubsection{快捷键管理}

在实际操作的过程中，会有大量的快捷键需要使用，给大家推荐 AutoKey 。这款软件支持 Python 语法，可以利用Python 完成各种操作，另外更加强大的是支持使用正则进行窗口过滤，同一个快捷键，可以在不同的窗口实现不同的功能。



\subsubsection{Rime 输入法引擎配置}

可对 Rime 输入法的词库或者快捷短语进行配置，将常用的命令载入。



